package fr.agileandco.tootle.client.vue;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.DecoratorPanel;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;

import fr.agileandco.tootle.client.Tootle;
import fr.agileandco.tootle.client.utilitaire.Popup;
import fr.agileandco.tootle.client.utilitaire.TailleDesEcrans;

public class Accueil extends VerticalPanel {

	private Button boutonDAccèsAuxListeDeTâches(final TextBox email) {
		return new Button("OK", new ClickHandler() {
			@Override
			public void onClick(ClickEvent event) {
				Popup.affiche(email.getText());
			}
		});
	}

	private Widget boutonDeCréationDUneListeDeTâches() {
		Button boutonDeCréation = new Button("Créer une liste de tâches", new ClickHandler() {
			@Override
			public void onClick(ClickEvent event) {
				Tootle.afficherLEcranDeCréationDUneListeDeTâches();
			}
		});

		boutonDeCréation.setPixelSize(200, 70);
		return boutonDeCréation;
	}

	private Label slogan() {
		Label slogan = new Label("Organisez votre travail...");
		slogan.setStyleName("slogan");

		return slogan;
	}

	private DecoratorPanel zoneDAccèsAuxListesDeLUtilisateur() {
		DecoratorPanel zoneDAccèsAuxListesDeLUtilisateur = new DecoratorPanel();
		FlexTable flexTable = new FlexTable();

		TextBox email = new TextBox();
		email.setWidth("400px");

		FlexCellFormatter cellFormatter = flexTable.getFlexCellFormatter();
		cellFormatter.setColSpan(0, 0, 2);
		cellFormatter.setHorizontalAlignment(0, 0, HasHorizontalAlignment.ALIGN_CENTER);
		cellFormatter.setColSpan(2, 0, 2);
		cellFormatter.setHorizontalAlignment(2, 0, HasHorizontalAlignment.ALIGN_CENTER);

		flexTable.setWidget(0, 0, new HTML("Accède à tes listes de tâches"));
		flexTable.setWidget(1, 0, new HTML("Email :"));
		flexTable.setWidget(1, 1, email);
		flexTable.setWidget(2, 0, boutonDAccèsAuxListeDeTâches(email));

		zoneDAccèsAuxListesDeLUtilisateur.add(flexTable);
		return zoneDAccèsAuxListesDeLUtilisateur;
	}

	public Accueil() {
		setPixelSize(TailleDesEcrans.LARGEUR_ACCUEIL, TailleDesEcrans.HAUTEUR_ACCUEIL);
		setHorizontalAlignment(ALIGN_CENTER);
		setStyleName("accueil");

		add(slogan());
		add(boutonDeCréationDUneListeDeTâches());
		add(zoneDAccèsAuxListesDeLUtilisateur());
	}
}
